System Design interview cheat sheet
understand the problem and establish design scope (5 min)
clarify requirements
why are we building this
who are the users
what features do we need to build
get interviewer buy in on feature list
non-functional
focus on scale and performance
do rough calculations
get general sense of scale
should end with short list of features and a few non-functional requirements to satisfy
propose high level design and get buy in (20 min)
top down, start with APIs
define input parameters and output responses carefully
verify they satisfy functional requirements
design a diagram
start with load balancer or API gateway
behind that is the services that satisfy the requirements
behind that is persistence so introduce data storage
do this for each requirement
keep a list of conversation topics for later (scaling, concurrency, failure scenarios)
create data model and schema
data access patterns and read/write ratio
step back and review the design
design deep dive (15 min)
determine with interview what to discuss in depth
identify problematic areas and discuss trade offs
ask interviewer if they have any concerns about current design
for each area
articulate the problems
come up with 2 solutions
discuss tradeoffs of the solutions
pick a solution and discuss
wrap up (5 min)
- summarize the design
- note parts that are unique to this particular situation